#include "led.h"

void ledInit(void) {
    /* 1. 使能 GPIOA 时钟（AHB 外设） */
    RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
    /* 2. 配置 PA4 为通用推挽输出，低速，无上下拉，初始高电平 */
    GPIOA->MODER   &= ~GPIO_MODER_MODER4_Msk;     /* 清模式位 */
    GPIOA->MODER   |= GPIO_MODER_MODER4_0;        /* 01 = 输出 */
    GPIOA->OTYPER  |= GPIO_OTYPER_OT_4;           /* 1 = 开漏 */
    GPIOA->OSPEEDR &= ~GPIO_OSPEEDR_OSPEEDR4_Msk; /* 清速度位 */
    GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR4_0;   /* 01 = 低速 */
    GPIOA->PUPDR   &= ~GPIO_PUPDR_PUPDR4_Msk;     /* 00 = 无上下拉 */
    GPIOA->ODR     |= GPIO_ODR_4;                 /* 1 = 高电平点亮 LED */
}

void togglePin(GPIO_TypeDef* GPIOx, uint16_t Pin) {
    GPIOx->ODR ^= (1<<Pin); // 通过位操作翻转指定引脚的电平
}
